According to improvement in storage density of a NAND flash memory used in a solid state drive (SSD) and a memory card, reliability thereof has become an issue. For example, when a distance between memory cells becomes short due to downscaling, threshold voltages of the memory cells are affected by interference between adjacent memory cells (CCI: Cell-to-Cell interference) at the time of writing the threshold voltage to the memory cells. Further, it has been pointed out that a three-dimensional flash memory has a strong tendency that the threshold voltage deviates with passage of time, as compared to a conventional two-dimensional flash memory, and improvement in retention capacity of data (data retention) is required.
As a method of improving the reliability of flash memories, there is a method of calculating a cross coupling coefficient by using hard-decision error correction with respect to a memory cell in which its threshold voltage has changed due to various factors, and reconfiguring the threshold voltage based on the cross coupling coefficient. However, in this method, there are many cases where occurrence of errors cannot he sufficiently suppressed. For example, in many three-dimensional flash memories, a structure referred to as “charge trap structure” is employed. In the case of this structure, the data retention is affected by the threshold voltages of adjacent memory cells. Therefore, the error rate of read page data is varied for each bit, and occurrence of errors cannot be sufficiently suppressed only by using a uniform coefficient.